package com.sls.game.dao.impl;

import java.util.List;

import org.springframework.stereotype.Repository;

import com.sls.game.dao.PriceTemplateDAO;
import com.sls.game.page.Pagination;
import com.sls.game.pojo.PriceTemplateInfo;
import com.sls.game.querybean.PriceTemplateQuery;

/**
 * 
 * @description 游戏充值价格模板表DAO
 * @author cx
 * @date 2012-10-12
 * 
 */
@Repository("priceTemplateDAO")
public class PriceTemplateDAOImpl extends SuperDAO<PriceTemplateInfo> implements
		PriceTemplateDAO {

	@Override
	public void insert(PriceTemplateInfo templateInfo) {
		this.getSqlSession().insert(
				"mybatis.xml.PriceTemplateMapper.insertPriceTemplate",
				templateInfo);
	}

	@Override
	public void update(PriceTemplateInfo templateInfo) {
		this.getSqlSession().update(
				"mybatis.xml.PriceTemplateMapper.updatePriceTemplate",
				templateInfo);
	}

	@Override
	public PriceTemplateInfo queryTemplateByCode(String code) {
		PriceTemplateInfo info = null;
		info = this.getSqlSession().selectOne(
				"mybatis.xml.PriceTemplateMapper.queryTemplateByCode", code);
		return info;
	}

	@Override
	public Pagination<PriceTemplateInfo> queryPriceTemplate(
			PriceTemplateQuery templateQuery) {
		Integer rows = this.queryRowCount(templateQuery);
		templateQuery.calculate();
		List<PriceTemplateInfo> list = this.queryPriceSystemList(templateQuery);
		Pagination<PriceTemplateInfo> page = this.queryPagination(rows, list,
				templateQuery);
		return page;
	}

	@Override
	public String queryTemplateCodeByName(String templateName) {
		String templateCode = this.getSqlSession().selectOne(
				"mybatis.xml.PriceTemplateMapper.queryTemplateCodeByName",
				templateName);
		return templateCode;
	}

	/**
	 * 查询总记录数
	 * 
	 * @param specialPriceSystemQuery
	 * @return
	 */
	private Integer queryRowCount(PriceTemplateQuery templateQuery) {
		Integer rows = 0;
		rows = this.getSqlSession().selectOne(
				"mybatis.xml.PriceTemplateMapper.queryPriceTemplateRow",
				templateQuery);

		return rows;
	}

	/**
	 * 查询结果记录集
	 * 
	 * @param specialPriceSystemQuery
	 * @return
	 */
	private List<PriceTemplateInfo> queryPriceSystemList(
			PriceTemplateQuery templateQuery) {
		List<PriceTemplateInfo> list = null;
		list = this.getSqlSession().selectList(
				"mybatis.xml.PriceTemplateMapper.queryPriceTemplateList",
				templateQuery);
		return list;
	}

	@Override
	public String queryMaxTemplateCode() {
		String templateCode = this.getSqlSession().selectOne(
				"mybatis.xml.PriceTemplateMapper.queryMaxTemplateCode");
		return templateCode;
	}

	@Override
	public List<String> queryTemplateNameList() {
		List<String> templateNames = this.getSqlSession().selectList(
				"mybatis.xml.PriceTemplateMapper.queryTemplateNameList");
		return templateNames;
	}

	@Override
	public List<PriceTemplateInfo> queryTemplateList() {
		List<PriceTemplateInfo> list = null;
		list = this.getSqlSession().selectList(
				"mybatis.xml.PriceTemplateMapper.queryTemplateList");
		return list;
	}

}
